package display;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import java.util.Map;
import java.util.HashMap;

import service.ClienteManager;
import domain.Cliente;

//import service.VentasManager;
//import domain.Venta;

@Controller
@RequestMapping("/cliente")
public class ClienteController {
 
 @Autowired
 private ClienteManager clienteManager;
 
 //@Autowired
 //private VentaManager ventaManager;
 
 @RequestMapping(value="/listado", method = RequestMethod.GET)
 public ModelAndView listado() {

   Map<String, Object> myModel = new HashMap<String, Object>();
   myModel.put("clientes", this.clienteManager.getAll());
   return new ModelAndView("listaClientes", "model", myModel);

 }
 
 @RequestMapping(value="/detalleCliente/{pk_cliente}", method = RequestMethod.GET)
 public ModelAndView detalleCliente(@PathVariable("pk_cliente") String id) {

   ModelAndView modelAndView = new ModelAndView();
   Cliente element = this.clienteManager.getById(id);

   if (element == null){
     System.out.println("NULO");
	}else{ 
    modelAndView = new ModelAndView("detalleCliente");
    modelAndView.addObject("cliente", element);
		//Map<String, Object> myModel = new HashMap<String, Object>();
    //myModel.put("Ventas", this.ventaManager.getAllByDependienteID(id));
		//modelAndView.addObject("model", myModel);
   }
    return modelAndView;	 
 }

 
 @RequestMapping(value="/actualizarCliente/{pk_cliente}", params = { "pk_cliente","nombre","isFrecuente","fechaCumpleAnos","domicilio","telefono" }, method = RequestMethod.GET)
 public String actualizarCliente(
     @PathVariable("pk_cliente") String id, 
     @RequestParam("nombre") String nombre,
     @RequestParam("isFrecuente") String isFrecuente,
     @RequestParam("fechaCumpleAnos") String fechaCumpleAnos,
     @RequestParam("domicilio") String domicilio,
     @RequestParam("telefono") String telefono
     
  ) {
   Cliente element = this.clienteManager.getById(id);
   element.setNombre(nombre);
   element.setIsFrecuente(isFrecuente);
   element.setFechaCumpleAnos(fechaCumpleAnos);
   element.setDomicilio(domicilio);
   element.setTelefono(telefono);    
   return "forward:/cliente/listado";
 }
 
 @RequestMapping(value="/agregarCliente", method = RequestMethod.GET)
 public ModelAndView aregar() {
 	return new ModelAndView("agregarCliente");
 }
 
 @RequestMapping(value="/insertarCliente", params = { "nombre","isFrecuente","fechaCumpleAnos","domicilio","telefono" }, method = RequestMethod.GET)
 public String actualizar(
     @RequestParam("nombre") String nombre,
     @RequestParam("isFrecuente") String isFrecuente,
     @RequestParam("fechaCumpleAnos") String fechaCumpleAnos,
     @RequestParam("domicilio") String domicilio,
     @RequestParam("telefono") String telefono
  ) {
   Cliente element = new Cliente();
   element.setNombre(nombre);
   element.setIsFrecuente(isFrecuente);
   element.setFechaCumpleAnos(fechaCumpleAnos);
   element.setDomicilio(domicilio);
   element.setTelefono(telefono);

   this.clienteManager.insert(element);
   return "forward:/cliente/listado";
 }
 
  @RequestMapping(value="/eliminarCliente/{pk_cliente}", method = RequestMethod.GET)
 public String eliminar(@PathVariable("pk_cliente") String id) {
   if (id != null){
	   this.clienteManager.delete(id);
   }
   return "forward:/cliente/listado";
 } 

 public void setClienteManager(ClienteManager clienteManager) {
   this.clienteManager = clienteManager;
 } 
}